Programmers are always trying to find the most efficient way to execute their code, whether the code is executed using an interpreter, compiler, or both. An interpreter is a program that is capable of executing source code. A compiler transforms the source code into another form, such as machine code. When the code is transformed, an interpreter is not required to execute the program. Each choice has advantages and disadvantages. Any improvements in interpreters and/or compilers could greatly improve the efficiency of executing code, thereby making programmers jobs easier, and allowing consumers to have faster programs.